package com.yunpeng.aidevice.dao.mapper.relation;

import com.yunpeng.aidevice.dao.mapper.IRelationMapper;
import com.yunpeng.aidevice.dao.model.relation.UserOwnPermissionDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 用户权限 Mapper 接口
 * </p>
 *
 * @author hemw
 * @since 2020-04-07
 */
@Mapper
public interface UserOwnPermissionMapper extends IRelationMapper<UserOwnPermissionDO> {

    /**
     * 查询指定用户的权限代码列表
     *
     * @param userCode    用户代码
     * @param currentDate 当前时间
     * @return
     */
    List<String> queryPermissionCodeListByUser(@Param(value = "userCode") String userCode, @Param(value = "currentDate") Date currentDate);

    /**
     * 查询指定用户的权限绑定数据列表
     *
     * @param userCode    用户代码
     * @param currentDate 当前时间
     * @return
     */
    List<UserOwnPermissionDO> queryPermissionListByUser(@Param(value = "userCode") String userCode, @Param(value = "currentDate") Date currentDate);

    /**
     * 查询指定权限的权限绑定数据列表
     *
     * @param permissionCode
     * @param currentDate    当前时间
     * @return
     */
    List<UserOwnPermissionDO> queryListByPermission(@Param(value = "permissionCode") String permissionCode, @Param(value = "currentDate") Date currentDate);

    /**
     * 根据权限代码或者用户代码统计是否存在权限关联
     *
     * @param permissionCode
     * @param userCode
     * @param currentDate
     * @return
     */
    Integer existsCount(@Param(value = "permissionCode") String permissionCode, @Param(value = "userCode") String userCode,@Param(value = "currentDate")  Date currentDate);

    /**
     * 清除用户权限绑定
     *
     * @param permissionCode
     * @param userCode
     */
    void clearBind(@Param(value = "permissionCode") String permissionCode, @Param(value = "userCode") String userCode);

    /**
     * 根据用户代码删除对象
     *
     * @param userCode
     */
    void deleteByUser(@Param("userCode") String userCode);
}
